{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# StackingClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "An ensemble-learning meta-classifier for stacking."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.classifier import StackingClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Stacking is an ensemble learning technique to combine multiple classification models via a meta-classifier. The individual classification models are trained based on the complete training set; then, the meta-classifier is fitted based on the outputs -- meta-features -- of the individual classification models in the ensemble.\n",
    "The meta-classifier can either be trained on the predicted class labels or probabilities from the ensemble."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./StackingClassifier_files/stackingclassification_overview.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The algorithm can be summarized as follows (source: [1]):\n",
    "    \n",
    "![](./StackingClassifier_files/stacking_algorithm.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- [1] Tang, J., S. Alelyani, and H. Liu. \"[Data Classification: Algorithms and Applications.](https://books.google.com/books?id=nwQZCwAAQBAJ&lpg=PA500&dq=stacking%20classifier%20subsets&pg=PA499#v=onepage&q&f=false)\" Data Mining and Knowledge Discovery Series, CRC Press (2015): pp. 498-500.\n",
    "- [2] Wolpert, David H. \"[Stacked generalization.](http://www.sciencedirect.com/science/article/pii/S0893608005800231)\" Neural networks 5.2 (1992): 241-259."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Simple Stacked Classification"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "X, y = iris.data[:, 1:3], iris.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3-fold cross validation:\n",
      "\n",
      "Accuracy: 0.91 (+/- 0.01) [KNN]\n",
      "Accuracy: 0.91 (+/- 0.06) [Random Forest]\n",
      "Accuracy: 0.92 (+/- 0.03) [Naive Bayes]\n",
      "Accuracy: 0.95 (+/- 0.03) [StackingClassifier]\n"
     ]
    }
   ],
   "source": [
    "from sklearn import model_selection\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.naive_bayes import GaussianNB \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from mlxtend.classifier import StackingClassifier\n",
    "import numpy as np\n",
    "\n",
    "clf1 = KNeighborsClassifier(n_neighbors=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "lr = LogisticRegression()\n",
    "sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], \n",
    "                          meta_classifier=lr)\n",
    "\n",
    "print('3-fold cross validation:\\n')\n",
    "\n",
    "for clf, label in zip([clf1, clf2, clf3, sclf], \n",
    "                      ['KNN', \n",
    "                       'Random Forest', \n",
    "                       'Naive Bayes',\n",
    "                       'StackingClassifier']):\n",
    "\n",
    "    scores = model_selection.cross_val_score(clf, X, y, \n",
    "                                              cv=3, scoring='accuracy')\n",
    "    print(\"Accuracy: %0.2f (+/- %0.2f) [%s]\" \n",
    "          % (scores.mean(), scores.std(), label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nlyIi6aNsik65JPFQI0VyjrqMYzPSp7oUEUknZVN0yiWJhxopktXCncji6TLOhxNhop9hwrQJOfvZ\nRUSy0UjPJuWSpIMaKZKVos2QEq3LOB9mWMmHzyAikk9Gejblev2SW+JupJjZZOBK4ENAGfAG8Hnn\n3EtJrk1GsGgzpETrMs6HGVby4TOIpIuySdJhpGdTrtcvuSWuRoqZjQaeBR4HPghsA/YHdia/NBmp\n4pkhJVyXcT7MsJIPn0EkXZRNkg4jPZtyvX7JPb441/8OUO+c+5Jz7kXn3DvOuWXOufWpKE5Gpkgz\npPidn6ZNTSl9f6jGDY2s/udqGjc0Duv14UrmZxAZAZRNknIjPZuUS5Ju8Q73Ogl42Mz+CCwEGoBf\nOed+m/TKZMRKdIaUZMywEm3cbarH5WqWGJG4KJsk5UZ6NimXJN3ibaTMAM4Ffg5cBhwBXGtmXc65\nO5NdnIxMiT7wKRkPjIo27jbV43L10CuRuCibJOVGejYplyTd4m2k+IAVzrmLg9+vMrO5wDmAgkCS\nJtEHPvW9/583/JO63jqKC4pZ8P7Y3h867rZyv0raN7ZTuV8l0z8znZU3rqR2RW1axuXqoVciMVM2\nSVqM9GxSLkk6xdtI2QysGbRsDXDaUG9Ydu8yHv/z43ssP+5jx7Ho9EVx7l5GimQ98MkFHK7H4czF\n/J6mTU1093Szadkmdl2/C4fDMEbPHk23v5u62rq0PFVYD70SiZmySdJipGeTcknSKd5GyrPAAYOW\nHQC8M9QbFp2+SCd8GbbhPvCpv8v7vPi7vGsm19C2rY32unYmnzuZ8tnltK1tY9NvN+GaHDPnzEzr\nuFw99Cr3PfrXR7ntV7ex5tU17N69m9LSUvaesTeX/vJS5h81P9Pl5QNlk6TVSM8m5VLuy4Vcind2\nr18CC8zsQjObaWafBL4EXJ/80iQXpGp2q0T0d4l/djpFVUVseWILRVVFXpf4CytjqtVX7GPsSWOp\nOLiCwupCKg6uYOxHxuIr9jF+0njmL5hP/e31ND7dSOe2ThqfbqT+jnrmL5ivE7fs4Zc/+iX//te/\nmXvoXL74lS+y6L8W8dYbb3HGiWfw3FPPZbq8fKBskgGUTcomiSwXcimunhTn3EozOxW4ArgYWA+c\n75z7v1QUJ9krm58627Spic7OTmp/UUvnzk6syHA9jtIxpYwqGBW1y7tpUxNlo8sYN2cc3U3d/V3q\n4+aOo2t0F02bmjQuV+Ly1W9/lUUnLaKkpKR/2UsvvMTpi07nyu9dyQP/eCCD1eU+ZZP0UTYpmyQ2\nuZBLcT9x3jn3EPBQCmqRHJLNT52tmVzDroZdFE4pZNqSaVTMq6D11Va23LKFXRt3xTRNZFFBEUU7\ni5i4YCL+bj+FxYVsf347RQVF1Eyu0bhcicuHT//wHssOX3A448aPY9PGTRmoKP8omwSUTcomiVUu\n5FLcjRSRbH/q7LbN26AYJnxuAmOOHQM+GHPsGJzf0fCzBrZt3haxvtBpFnv9vZTPLGdH3Q4a7m7Y\nY5rFbZu38dZrb2FmCoI81tPTw8srXqa4tJh5h83D54t3pGx4ba1tTJiknxuRZFA2KZtGmp3bd7Lm\n1TVMnjaZfWbuk5RtZlMuqZEicYv01Nlkzm41XHW1dfhKfFTOqyTgD/Qvrzy4El+Jj7raOuYcMSfi\nNs4870xWLV7Fqz98FYqAHpgyeQpnnncmAE0NTSxZvISGTQ0DXr/qnquomaIHWuWTu266i5t+dRPN\nHc2YMyaMncB3L/0uC09YmNB2f/aDn9He3s6HTvlQkioVGdmUTcqmkcLf6+eS8y/h0ccfpTvQjS/g\nY84Bc7jy11cyZdqUYW8323IpOZcDZUQJfepsqGx56uzMOTOhBzpe66C4pJjiomKKS4rpeK0DeoKv\nR3H3tXfTUdbBgV8/kEMuOoQDv34gHWUd3H3t3QAsWbyELV1bmLZkGgfdehDTlkxjS9cWlixekuqP\nJ2n06F8f5ec/+zmBwwPsd9l+7HvJvuyatItvnf8t3nr9rWFv94WnX+DGX97I5CmT+eal30xixSIj\nl7JJ2TRSXPq/l7L0yaVUn17NrJ/NYvL5k6ndUcv/fPJ/CAQC0TcQRjbmknpSJG7Z/tTZOUfMYcrk\nKWy6xRtTWXlwJS2vtLDplk1MmTwl6pWqcEMGAErGlLDyxpU8s/QZGjY1MG3JNMYdPw6g/88NV22g\ndkVt1H1Ibrj9xtspmlXE/kv27x/iVTWnilVnreK2G27j0msujXub699cz1n/fRYlJSXc9be7kjZ0\nTGSkUzYpm0aCttY2Hnn0EcadMo69P703AFUHVFGyVwl1F9exbOkyTjj5hLi2ma25pEaKDEusM4gk\nevNe7Ypa6mrrmDlnZtiT61Dbv+qeq1iyeAkbrtqwR5d3tPdHGzKwesVqKPICJlTlwZVQxIAue928\nmNs2btlI5YmVA07YhWWFlM0u4+26t+PeXlNjE6f/5+l0d3dz54N3MmPWjCRWKyLKJmVTvnu77m26\n/F1MOWzgsK7qQ6pxxY61r66Nq5GSzbmkRooMS7QZRBKdBjLauNpo26+ZUsOtT986ZJBEen/okIFw\nD8Sae8Rc7v/9/bS80tJ/lQqg5ZWW/i77bJ4GU2I3rnocm+s2D1jW6++l8+1OambFN3SkrbWNU44+\nheZdzVx3+3Uc8f4jklmqiKBsUjblv0lTJlFgBbS92caYQ8f0L29f3w49MHn65Ji3le25pEaKJGSo\np84mOg1k6Lja0C7xJYuXcOvTt8a8/TlHzAl7lSva+yMNGTj6I0cz5arIXfZXf/vqrJ0GU2J32hmn\n8dOf/5R37nyHyadMxt/hZ8PdG6ARFl+5OObt+Hv9fPToj7Jl0xYu/fmlfOjU7LgpUSRfKZuUTflq\n7PixLHjvAp6991mKa4oZd+Q42t5q4+1fv83YsrGc9PGTYtpOLuSSGimSdIlOA1m7ojbiuNpnlj4T\n8/bDXa0KrW/cgnH4u/2MWzBuwPujDRmI1GWf7dNgSuw++aVP8tbrb/HAHx5g671bASillPMvOJ/5\nR82PeTufP/nzvLHuDWbNnsXWLVv5xQ9/MeD1b1zyjaTWLSJ7UjYpm/LFZdddxlc+9RVqf1rLO4Xv\nYAFjXPk4fvHrXwx4OGMkuZBLaqRI0iU6DWRdbV3EcbWrV6yOun2fzzdkl3zTpiZ6envoGdPDhrc2\n9D+1t2hsET29Pf31RRoyEKnLfvU/o9enIMgNPp+P7//s+3zxa19k2d+WUVJawomnnsjoMaPj2s76\nuvUAvL72dV5f+/oer2dDGIjkO2WTsilfjB4zmrv/djcrn1vJKytfYeKUiZzw0RMoLIj91/pcyCU1\nUiTpoo2bjTYNZN80jUONq517xFyeXf5sxO1H6pK/4u4raN/Vzvba7Yw/fjwFowro7ehl26PbaN/V\nPqC+oYYM9AnXZZ/o55fsM2XvKXz2y58d9vv/sfYfSaxGRIZD2aRsyjfzj5ofV69+qFzIJTVSJOkS\nnQYy2jSNR3/kaF585sUht79t87aIXfKvr3qdQHeAHQ/uoHhsMWX7ldH+Zjs7lu7Adbukfv6u7V0U\njy6me1c3jUsbs2IaTBGRkUjZpGyS3KJGiqRErNNADiXaNI2Rtv/4nx+P2iU/aswoOto6WH/ZeqzQ\ncH5H6ZhSRo0dlZQu776nAq+5ek3YpwKLiEj6KZuUTZI71EiRlIg2DWQ00aZpjLT9WLqIsy/JAAAg\nAElEQVTkl/7fUmyyMf3T0ymsLsTf7KfpviY6NnUkpcu776nA834wj/IZ5bS91UbDXQ3cfe3dmkFF\nRCRDlE3KJskdKW+krPhX9HWOeG+qq5BMiTZuNlpQDDVNY6TtR+uSn3XILHzFPsacNIYxHxjTP+63\nt7uXnbftjKu+oT7T4BlUqqdXU+Ar0AwqIiJZQNmkbJLsl/JGygGdx0RdZ8W/no66jhoy+SXVD5SK\nOA3jxkbKRpcxbs44upu6+2dQGTd3HF2ju2ja1ERFdcWw60t0BhkREckMZZOySbJHVgz3SlZDJhw1\nbrJTog/UiiZSl3wgEKCooIiinUVMXDARf7efwuJCtj+/naKCImom1yRUn2ZQERHJTcomkeyRFY2U\nWMTSkBlsXenTMQ03G0wNm9RK5wOlwnXJh5vhZfuL2/tnYAESqi/RGWRk+Hw+HwEXIBAIZLqUpAkE\nAjjn8Pl8mS5FJK8pm5RNqeKcy6tc8vv9BFwg5bmUM42U4RhOwwai99qoEZOYdHY5D3VzY6QZWNav\nWZ9wfYnOICPDM6pyFIFAgPbW9kyXkjS7m3fTG+iltLw0+soiMmzKJkmFssoyegO9tO5uhcmZriY5\nOts7CQQCjKocldL95HUjZbgiNW6G0zujRs1A6ehybmpoGvKpvjVTaiLOwJKM+hKdQUaGp6yiDFfo\nqHu9jhmzZmS6nIQFAgHeeO0NiqqKqBxdGf0NIjJsyiZJhcrRlRRVFbGudh0zZs3Ii17xutfrcIWO\nsoqylO5HjZQ4Dad3Rj0zA6WjyznSU31vffrWAbUM3l8y64s2g4wkl8/nY95R86h9rpYxY8cwdZ+p\nORkIgUCA3c27eeO1N6hdW8thxx+W6ZJE8p6ySVJl7n/M5d+P/Rvuh/0P2p+q6qqczaaNb2+ktraW\neUfN03CvfJCsnpl8asz0dTk/e/WzdLR3MKpsFO879n17dDkP1SUeSe2K2v6n+lbMraBrSxcVcyuY\n/MXJbLhqA7Uravu3NdTVpL76/nnDP6nrraO4oJgF71eXeC44cP6BbG3YyuNPPU6hFWJmmS4pbs45\negO9FFUVcdjxhzHrkFmZLklkRFA2SSr0ncNX/3M1tWtrKfAV5Gw2+Z2fCTMmcOD8A1O+PzVSMizW\nnplIjZlcbLy0t7Sz6vlV7Ny2Ewq98Y2rnl9Fe0s75VXlUbvEI6mrrcMVOJqfa2bTbZv6l5fPKscV\nOOpq69hn9j4xTePoAg7X43DmUnUoJMl8Ph/Hnnosne2dtOxsycmbFX0+H6XlpRriJZJmyiZJlVmH\nzGLWIbNo2dVCZ1tnzmZT5ZhKSsvSc4+kORf7D7iZXQJcMmjxWufcQUO958EH0f+gFFpXGvvUzNnU\nmPn8MZ9nS9cWJnxuAqMOLKNjTTuNtzUysWQitz59a//rk784eUCXeN/rkdSuqOVrp36N0v1KmfSl\nSZTNLqN9bTubf7uZzjc7ue7+63jsz4950zh+9t1pHOtvr2fBIQu44MoLuPrbV0d8XSRXHDP6mNy7\nXBen4WTT07ueVjbJHpRNIqkXay4NpydlNXAc0LcD/zC2IUkSrSemqamebds2Mn78VFbwdth1Emm8\nJNLlPWXJFKreXw0UUbxXMeYzGn7awIO3PdjfJT7u+HEA/X8O7hIPZ/yk8RSOKmTsR8ZSPq8c3ygf\n5fPKGfvhsWy9aSsQeRrH2hW1aZuGUkSSRtmUQ1J947aySST3DaeR4nfONSW9Ekmq9vbd3HH3d1m1\n9jH81kWhK+GQ2cfzmTN/QllZVf96sd4TM7ghk2iXN0VQdmAZUIBZAc4FKDuoDIrg5WdfhiKoPHjg\nUJfKgyuhyHt/pCBo2tTE6AmjqZhRQfeWd5/aWzGzgu4J3dTV1kWcxjHa63oqr0hWUjblgFQ/0V3Z\npGyS/DGcRsr+ZtYAdALPAxc65zYktyxJ1B13f5eXGpYy7dx9qT5gLM3rdvDSXUvhbjjnrOv714vl\nnphwDZmfn7uE3QXRZygJZ+acmbhuR+urrYw51gslswJaX2nFdTsOfd+hPPPkM7S80tJ/lQqg5ZUW\n6PHeH0nN5BqKC4up6q6ia1wPnW09lJQXUbKjiNbCVmbOmRlxGsdor+upvCJZSdmUA1L9RPdYZ88K\nJ5nZFO7i385tNTh/McW7q3Cje+ju7KGotAjbXYTzt9LpG9nZNJyHb0tuOub42NaLt5HyAvA5YB0w\nCfgB8LSZzXXOtcW5LUmRpqZ6Vq19jGnn7steR04B8P50sOo3j9HUVE9NzfSYtze4IbN27fPs2LmJ\nqd+eypjjxuGcY8xx4wg42HjVBv54ey37HORdTQo3lOzA+QdSGChmy22NuEABZQeU076ujcY7GikM\nFPPhz3yY+353H5tu2USgN0D5geW0rWljy21bmDJ5StSu+75pGv9x8z8YdXwFo2ZMZMcrW+h4rJX3\nL3g/c46YM2Aax4pZFbS+3to/jePg1/VUXpGsp2zKAal+onvo7FnjjveyKZ7hWMnIptBftPe4CFgF\nLx+wnBW33kfZiaMYNWMSu1Ztpv3hDo444DT2OWgO02bM5/XfvkBXJ5TtV0H7m61svKueWTOyP5sG\nNzKGM5R8uA/hlvwUVyPFOfdIyLerzWwF8A7wcSDsJYrly+/hmWfu2WP50UcvZuHCxfHsXmK0bdtG\n/NZF9QFjByyvnj2WelvPtm0b42qkDLZ+/StYkaNqbhX0gt/vp6iwiKp5VVgRBNb5OGCGd6IJ94yY\nCdUbqKqqofHtejb+7G18xT4C3QEC7TBh0nQ2vLmBH9z8A7560lepv7IeKzFcl6OsuIwfPPiDmGpc\n/NXFPHLMY+y4cRe+kk0EugKUWAmLb/d+5kKnmdy9ezdVVVUDppnUU3lFcsdwsmnZvct4/M+P77H8\nuI8dx6LTF6WkzpEu1U907xuuVXlwJYHeAP4eP4VFhTEPx9rwZuqz6bRTlvDkBXex86Zt+IobCHQH\nKO4t47Tzl7BX53TOO+NQ7rj7u/zrmgfY3bGDqlFjOeLg0/jMGT9hxb9e5vAPnUXjVnjzmpUUlKQ/\nm6L1dvQ1Mobz4GuRwRKagtg512xmrwP7DbXOwoVqjKTb+PFTKXQlNK/b0d+TAtC8dgeFroTx46cm\ntP199z0Y12O0rG6h+ugqcNDb66fl1d24HmPffQ/uX3fwVZF1pU+zeec09pqxN12jWxl34jh85QUE\n2nrZ/vB29hq7N9P2m8a1F15L+Yxy9v6vvSkoK6C3vZdtD23j/t/dH9OQgGsuvAbGwaQT51JYVYF/\ndys7Hn6Da797LZfdeRnlVeWcd/l5bDi9kVdfaGL6nBrOu/y8/gcT6am8IrkrlmxadPoiNUbSLJEn\npsfyC2+nbyauG5pf8bLJBcDf00vzqhZct/d633bCXeWftt80Zr9nb3rf8bKpoLyA3mA2zd47tmzq\n2+6Kf4WfffPWW78LE3qZeMJcCqoq6N3dyo5H3+CXt53J5UueoaysirO/eC2bfvA2zZvfZMrk/Tj7\ni9fi8/m8PC2AQ77wIZqa6nlp91Kqa2oYs9cEatdFPz7JEktvR7w9IutKn1YviuwhoUaKmVXghcAd\nySlHkqGmZjqHzD7euwfFeT0ozWt3sOHu9Rw++yMJ9aIAzJ59JJPG7M/m39bh7+mhfO5o2lbvoun2\nrUwasz+zZx855HsP6DyGpqZ6tjdsYr9z5wxoRG2d0MCm32zi3jvX8OxTK5l87nTGH+U1DMrKoGx8\nWUxDAjbXb+bllasY/7lpjHnvu7+j+Mo7+fftL7O5fjOTpk/ipadf4p11uxlT803eWXsd/37m37xn\n4XsGbEtP5RXJPcqm7JToE9Oj/RJ7wIxjWDrm12z5bR29Pf5gNu0MZtMsPjjjXO+OJbxe/nATwtTV\n1THjnBn9w9EAGqc0UndjHWtWrtljuBqEz6ZwjaDN9Zt5581V1AzKpoLKTt6+/WWe2/UHjhr9CV55\n5Qk2bNjC6NEXsXHjNbz66pMccshxA7ZVUzOdD9Z82fumM+JhyQlqoEg4cTVSzOynwIN43ehTgB8C\nPcCe47kkoz5z5k/gbu8elHpbT6Er4fDZH/GWJ8HFFy7laxcczMafNuAr3tzfZX3x1UujvjfacLTA\nOh+Gj/GzphDYFKB1czOBSdVU7jOF9q56lj/exD5z3g2IwWFQu6IWP72M2tdH+5Za/Nt7KBxXxKgZ\nPvz0UruilglTJ3DfzX+j138kY/daTNOmf3HfzUs57OjD+ntT+mhaR5HspmzKHakeSptINkUbjhY6\nu1b75nbaGtoon1Ie83C1aNlU/1otCxYE+NvfbqK3dwFjxnya7dtfYOnSm5g379g9sine+0tFck28\nPSlTgd8D44Am4B/AAufc9mQXJokpK6vinLOuH/CclGSezDZtep2ykv2oLDifQKAdX8koAoFr2bz5\njf9v796jq6rP/I+/vycnOblBiBLAACogF29cilJtC2jXFFsHqHVmOlLHtmq1dpyKlzW/SmvHOp1q\nbWecehltte20tpa1ftPLj4Id661VW4uKEsAbmEBLQoAEAiHkcm57//44SThJzv26zzmf11pZLs4+\nZ+8nm8N+fPb3u58vkybFPk686WgzZszHFXCz/Zuv0NdxjKAVpMxVRvWk8VT4q3nf+JU0DISOEWne\nq99zNtWV4+j8SQe+w/3Dr1c2VFI3bhxnLzmbN158g11NHYyr/zcAxtVfzc6tnx8zmvL6C6/z4LpH\n+eI9148ZZRERx1BuKhDZnEq7s/JFdh3aQkXldDyuL4LdD55KbOshXj38C1ZOuiXm52NNRwt6Q921\nXLaLbf+6jd79vQSDQcrKyqiZUoPbcrPvUAN9MaaTnb3kbOrGjaPriQ76O8fmplPPOpvt25+nuXk3\n48bdAUBt7fW0tFw7ZjRl27bneOyxL3HddfeOGWURKRbJPjivh0sKTEPDqRm/02JZoTs9gcB8xo//\n6+HXu7p+H/WOz+iYYk1HmzfvQipMNZ0HDzD5s5PCVv3toMHMHPH7RBwingDr3d+gs7OFKdc2Mu6c\ncfS82cOBH7Qz3p7CX/ZP5tePPYrft4Dy8kaCgS7Ky6cS8C8YMZpiWRa/eHQTB1sro46yiEj+KTcV\nnkxPpd1Z+SKWZfH2i09iWMDESZcMbzt88CX+uGETl85dG/MaPno6WsWMOnre7Q511zor1F3L4/Jw\nZN+RMSvSjw9OoX7SZOYOLBu+eTa6UDnl1FOorarlwMEIK9ZXhT7/+CNfJxCYj9s9jWCwC7d7On7/\n/BG51bIsNm36Hp2dJJRzRQqVvtWStPb2XbS17aasbDvd3SuGf8rKttPW1kJ7+664+/j0lXfzvqkr\naf9uOztueZ3277bzvqmh6WidnXvxm35O+eQ0PKdXYg8YPKdX0vjJafhNP52de0fsK9Kf/aafaWtm\nUDOjhmBfkJoZNUxbMwOXcbF721Z27diPZW+nY/8qDrRdQsf+VQSt7ezdtZ/W5tDSCkOjLTXjr2fn\n1g62vrQ14u9ysPVgimdSREQy5ZT6Vlrf24/bvZ2jh1YN/5SVbaejdX9Cuem6r1zHjFMuYM/97bx9\nyw46HznCkqmX87HPXMfB1oP4bB+NaxqpPL0SewAqT6+k8YpGgi4fJ7WeDpy4efbbJ0fmhqHPT79q\nOlWzqvD3+qmaVcX0f5iOz/ZR7t1KR9t+bPcWDh+7iM4jH4iYW4dGW6qr/5GWlhZ27PhdxN9ldG4U\nKTRpPTgvpamxcQ633voIXm//mG0eTxWNjXPi7iPWdLS//OVNgi4/NTPr8NsV2NYEjDlK9UwfPa5D\nI1ooRxryPnSojaDLz6lL5lM2voxAwIfbXUGwJsiO9a8zwz6f22/+EF5vP83Nr/Pkk4/y1399NZ6z\n3JR7Kth/ZDr7X7F4/FtPMtB3Ht6BpXiqXok4mqLpYCIizjD9jOl8+btr8fX7xmxr3lMRMzedmDZc\nw+3X/HJMbtpZ+SIvPLeHIEGqZ9YSoBIrOAGX6yg1swY44uodkZsGXvHzgx/8CxNrT+SGzvZOggQ5\n7UOn4a5zE/AFcFe4CZwcYMf/7KC8opyv/ygU/86mnax/6Ekuu/TznHHG4uHcOjSTwetdhM93ARUV\nL0ccTdF0MCkGKlIkaS6Xi9mzU1ilKYJI09EmTpyG5Q1ydOdRauafCbYHTBlH330HyxscbqEcbch7\n9DMvbncFAF3v7sNte4aPaVkWGzY8xLFjNbz11mbWrV4fusj7oKnpWdre68DrXYvf6wI+wY5X7mD9\n97cye1Eo4Zy3WNPBRAqV1nAoPi6XizPfd2bEbd4KcA2MvD6P/g6ETx8enZvmDizjSMNBBnqCHHn7\nGLXzp4JdiW2X0fXWO1gDY3PTsYM1/OBbm/BXhnLDkUMNBH2hZ14mL52Mu9xNXx8c2nqYoNfN/sOT\nqZ80Gctt8fsn/x+93RN4663NrF59YppaU9OzNDfvJhi8C78fXK7LaG7+2ohnVjQdTIqFihRxnJNP\nnobL56Hzfw5jBQ5ROWMiA38+xOFfHma8byInnxxKBCOHvB8evkiPfual5oxx9Db3jGnBfOIBxbW0\ntJxo8zj8zE3/AgLeibhcFQT9DQT6F7Dtl5u5dO5a3qv+Az977A3efLUDT80X2fFK5BbGIuJManla\nWHZWvhhx3ZFk9xEu2e/Aktq/4Qe+dRz6n8PYgcODuekwh3/ZFTU3Hdz1ML7XgixYcBGMh9+ftX7M\nivIHfnqA8+au5oLxfwcDoULkwK5u6sbdGjE3DQzMw+utx+WqwO8/iYGBeSOKkWi5TaTQqEgRx2lv\n34WLcXj3drL/0a2YChe2z8Lu9+BqqKW9fReNjXNiDnkPtWB+7YETq/aeP//jwy2Yhy72kdo8Dj1z\n4/N1YduvYEwdltWNz2fR1lZPe/suZjd+iJ//6iFMYDknT7ieg4dfG3HHLFykLi8iIpKcdK6loz87\ntNhiMoVKJnLTTVf8aMyK8pnMTUPHT6SFsYjT6RsrjtPYOIfVqz9HbfUUXAO3EDh8G66Bm6mtnsLq\n1Z+jsXHO8J2iYPAy/H4IBC6jufnEA4RDq/ZOrV+AfXQ6U+sXcP21D1BdPR4IH0W5Hhhq8xj6fGPj\nHFauvJqqqnImTvwyU6bcx8SJ66iudrNy5dUjjj/0+Qm1/8TBXd34Xgsyd2DZ8A+EkmH4j4iI5NdQ\n0ZLM6Ewh5qbwz4sUGhUpJSCbHT46O/fyzjsvZ/wYTU0vEAyeTzC4CpfrSixrNcHg+TQ1vThmyNuY\nQyOGvC3LAhhetbem5jba2g4MX6TDWyhHavNoWRZNTS9gzAeprf04LtcEamsvAz444vixPj9k7sAy\nTmo9PWbRosJFREpRNnPTwdaDvPnKmzG7L6ZSqBRLbgJ1/xLn03SvIpetDh99fcd4/Ikvs+3dZwgY\nL27bw4J5H+HTV949fEcoVSOHtF/GtoMYU4bPZ2hrq6ep6enh7Zb1O6APqMbnqxwz5N3Xdw4DA+dR\nWfmHMUPmZWXQ3b1i+LhlZdDWxvD+y8rg0KEL6OvrpLq6gfLy8WO2R/p8e/supk2bB4w9/9GmFrz6\n2tgkqWliIlKsspWbeo/18tg3HmPL5i0ErABul5vzLjiP675yHTXja8a8f8n5id8oKubcJOJEKlKK\nWDY7fDz+xJd5Y98mpn9hBnVzT6J7Z1foQfUn4IbrHkpr30ND2j/72f14vRPw+bopL6+jsvIoK1de\nzcKFK1i5cg8/+9n9GNOA3++jvNxDZWXXmCFvr/d2bLscr3clzc33smPH7zj33ItjtlCeMWMRt97a\nQH9/L0888XVaWmqYPv0kPvWpr1JVVTO8PV4L5mTO/+jiZWgxsNFUuIhIoctmbnrsG4+xedtmTr3h\nVOrOrKP7ne7Q4ozfgJvvvTnq5xJ5PqUUc5NIPqlIKWLZ6vDR2bmXbe8+w/QvzGDShVMBQv+1Ydt3\nn6Gzc2/aq9w3Nb2AZc0kGOygrGwdweADBIMzaWp6kUsu+fyI7S7X2jHbn3zyUXp7Z2FZk4FyLGsK\nvb2zhi/I8Vooz559Pk1Nz9LR0c2ECbfS0XE/th0c/lwiLZjTOf+JjrioaBGRQpPqtXHoxk20697B\n1oNs2byFU284lclLQ6vZVy6tBBu2fG8LB1sPDq9yH6v9cCylnptEckmlc5EK7xAyfvxVBIPvjzgn\nFZKfl3roUBsB46Vu7kkjXq+bdxIB4+XQoba09t/evovW1hZ8vjewrDnAEixrNj7fVlpbm2lqejru\n9ra2Frzel4HPAp8CPovX+zJtbc1jVh2OFF8y5y+SdD8fTfhD+XMHlkV8vkXPuIiIU6Wam0Y/1xdJ\nZ3snAStA3Zl1I16vO6uOgB2gs71zxDVy9POC8Sg3ieSWipQilWiHj23bnuOuuy5n27bnEt53+GKJ\n4brf7cJte4YXtEp1/42Nc1i16hqqqibT0LCWKVOm09CwlqqqSaxadQ0LF66Iu33hwg8AXlyum4C1\nuFxfBLwsWvTBEasOR4sv3Q4pueqwMrpoUUcxEXGydHNTrEKlobEBtyu0WGK47re7CXrd7DvUMLyP\ngVf8yk0pfF4kl1SkFKFEO3yMnpea6J2UocUSW3+6h46X9+Ht6qfj5X20PrGHBfM+MjzVK9X9A4Md\nTM6npmYuFRV+amrmYUyog0q87ZZl8fLLm4Bl2PYHgTOw7Q8BS/njHzfG/f2T7ZCS6vnPFhUtIuJE\nmcpN4SPJ4SZPn8x5F5zH3h/v5eCLBznSOsDeZw7S8oO9w4slzh1YptyUp9wkkiw9k1KE4nUIGerw\nkc681KHFErd99xn2mj24bQ/vm7dyeEEqSH3eazIdTrq7VxAI9ON2Vw1vf/75/6anpwd4Bdu+DKjF\nto9jjKGnp5+mpqc577xLo8aX6PlL9/znSiIP5evZFhHJtmzkptHPqVz3les4uBaa799C0Oyl0hrH\nknmXKzclcf5FnMLYtp3VA2zcSHYPIGNYlkVLy+tRO3zMmrUYgHvuuYKdOycxceJDHD58I3PmHGLd\nuvVJdfno7NzLoUNtTJw4bcTD8pZlpbz/ePHPmLGIPXu24vX289JL63n66SdYseJKli5dg8dTxWmn\nLeDFF59gw4YH6eiYSk3NjfT2PsSkSe18/ONf5KKLrsLlckWND4h7/mL9Domcf6d1Uhm9ToCKluKx\nbMIyk+8YnEi5KfeylZtGX7/mDixTbkohfifmJilOq1aRUF7SSEoRcrlccTt8NDU9O3in5g5gaF7q\ntUl3+WhoODViJ68Td4KS338i8c+efT6BQIBvf/szBINT2bz5Ka677kHc7tBXeuLE6Rw/7mLixG/g\n8cynquoUenuvpaHhVNxud9zfP5EOKenE7zSjR1vURUxEMi1buSnSg+/KTanFL+IkKplLULbnpeZq\n1dsNG+6juzuAMTfS3R3g17/+z4jHP378tRHHDwQCmpcbRyJdxEREMkm5SblJJJxGUkpQtuelJrP/\nVFe9DQQC/PrXj2BZyzDmw1jWH9mw4WFWr76FAweah49/4MBi+vsPUVU1kaqqk5NelVdC9FyLiGSb\ncpNyk0g4PZNSgrI9LzXR/Q/NDd6+fTfz589K6nmYX/ziWzz++IPY9n8BZwDNuFw38ulP38Rll91G\nS8vr9PX1cO+9/8Dx43XU1h7jS1/6CdXV40bMG87G71+KRs8JBxUtTqFnUiJTbnIe5SblJikNeiZF\nosr2vNRE9z80N7i6+h9paXk46pzg0SvYD92psu3zgIlAOTARyzpv+I7V7Nnn84tffIu+vjKMuZG+\nvntpaXmdyy//ZyCxVXklcRppEZF0KTcpN4mEU0kueTE0N9frXURPzwUMDCyMOOc20oJWTU1PD7Zx\nfA24Cvi7wf++Rk9PD01NT48YcocPY1kfYsOGhwkEArn7JUtYrLVaREScSrlJxDnSKlKMMbcbYyxj\nzH2ZCkhKw9CdqmDwMvx+CAQuo7l55Kq30Ra0GlrVt7q6ggkTbmPixG8yYcJtVFdXDK/qu2HDfRw9\nGgD+ntCMxjUjHmCU3Ir1EL5IJikvSTqUm0ScI+UixRhzPnA9sC1z4UgpGLpTNTAwD6+3HperAr//\nJAYG5o244I9c0OpEknC5XLS3/5ny8ouor7+CceOWUF9/BeXlF9He/hcsy4o55K47VvkVr3OYSKqU\nlyQdyk0izpLSMynGmFrgp8DngK9mNCLJuNHzZpPdnun9D3VY8fm6sO1XMKYOy+rG57Noa6unvX0X\njY1zePLJRwkGL6C29pMcO7aZTZse5dxzL47boeXEqr5DQ+7jgB7AS0/PwPCqvuIMWqNFMkF5qfAo\nNyk3icSS6oPz/wVstG37eWOMkoGDxWujmGqbxXT239g4h5Urr2b9+gfweG6nomIWPl8zPt+9rFx5\nNY2Nc4bvVJWX38z+/S3U1X2Klpa17NjxO84992JuvfWRqB1QTjttAfv3t/Db3/6ciorbcLtnEgjs\nxuf7dy655FMsXLhizOfEOWIVLSpYJAblpQKi3KTcJBJP0kWKMeYKYCFwXubDkUwaPW/23HMvHtG+\nMN72bO6/qekFjPkgtbUfB6Ci4hy6uv5AU9OLXHLJ5wcXtDoXv9+Dz3eU3t5KysvPHd5PrA4olmWN\nGHIPWUJX1xba2/+iFo4FZqhoUccwiUZ5qbAoNyk3iSQiqX8RxphpwHeAK23b9mcnJMmUaPNmE92e\n6P5DbRoT3/+JIfHtdHev4PDhpXR3r6CsbDttbS3DC1pZ1hb6+y/H5focAwOXY1lbaGtrob19V8y4\nRu9/6Gdo//E+L84Uq2OYnmcpXcpLhUe5SblJJBHJjqQsBhqAN4wxQwuxlAHLjDH/BHjsUatDvvDC\nel56af2YHS1duobly9ekELIkYugBwGDwAurrr+Lw4c0j7hjF257o/r3eRfh8F1BR8XLC+29snDM8\nJP7SS+t5+uknWLHiSpYuXYPHU8WMGYu4+eaT+eEPb6e1dTZ1dTfT3f2fTJvWzQBONW4AAB60SURB\nVDXX3ENj45yYsYXvfzSPpyru56UwxFubRaMsJSPpvATKTfmi3KTcJJKoZIuUZ4FzR732I+Ad4JuR\nEsHy5brg58OJO0V3AFBbez0tLdcOL0oVb3ui+w8G78LvB5frMpqbv5bw/mfPPp9AIMC3v/0ZgsGp\nbN78FNdd9yBud+gr2d/fQ0dHD/X19+PxzMflqqOz81oGBo7HTVTZXhBMnCm8aNHUsJKSdF4C5aZ8\nUW7ShUgkUUlN97Jtu9e27bfDf4Be4LBt2+9kJ0RJ1tCdokBgPm73NILBLtzu6fj989m06VECgUDM\n7aMXrers3Btx/9HaNCa6/w0b7qO7O4DLddOIPvHx4h8dn8hoWkyydCgvFQ7lJhFJRqrdvcJFvEsl\n+ROvDeLQvNpo29vbdzFt2jwgcgeUeG0aE9n/lClnDPaLv4iKii/g8/2RDRseZvXqWzhwoDnh+EQS\nEe3he42uFC3lJQdSbhKRZJgoI+EZs3GjkkWuWZZFS8vrUee9zpixiD17tkbdPmvW4uG5u/fccwXb\nt+9m/vxZrFu3fvj1//3fRyK2abziipu45JLPx93/r3717/zkJw/icv2csrL3EwxuxrL+jk9/+iYu\nu+y2mPEPxSeSjp2VL455rRiLlmUTlpn47yo9yk25p9wkIgCrVpFQXsrESIo4TCLzXhOZF3uiQ8qV\ntLQ8MWJOcKw2jR/72Bdi7j8QCAzeqXo/xszAsjowZia2/f7hO1aatyvZFuvB+2IsVkTyTblJRJKh\nIkUiOjG3dyp+/xNUVExNeFXdeEPeTU1PD6+6GwiMvOD39PRq1V3JC00JE3E+5SaR0qEiRSLavv15\n3nuvhWCwYbBDipfm5raEVtWN10Zx4cIV3Hjjf9DXd2zMturq8Vp1V/JKXcJEnEu5SaR06JkUGWNo\nvu+bbx5jYKADuAl4gMrKSZxzTt3w/F+RUhP+HEuhFCt6JiUy5abCo9wkUhwSfSZF/5pljPb2XbS2\ntuDzvYFlzQGWYFmz8fm20tra7LhVcUe3oRTJlmir3YtI9ik3iZQWFSkyRmPjHFatuoaqqsk0NKxl\nypTpNDSspapqEqtWXeOoVXG3bXuOu+66nG3bnst3KFJCtAaLSO4pN4mUFhUpElGoQ8r51NTMpaLC\nT03NPIw5n6amsW1b88WyLDZt+h6dnWghLckbja6I5I5yk0jp0IPzBaCzcy8NDafm7HjpdkgZLVvx\nD7WhHDduLS0t949oQymSa3rgXkqNclNkyk0imaEixeEiraqbbY2Nc9LqkBIuW/EPtaEMBi+gvv4q\nDh/ePNyGUg9OSr5pDRYpdspNkSk3iWSOihQHGz1knKuLXCILbiUim/GfuFN1BwC1tdfT0nKt7liJ\nI2kNFikmyk3RKTeJZI7KegcbOWTcwo4dv8t3SEnJVvxDd6oCgfm43dMIBrtwu6fj98/X/F9xND1w\nL8VAuSky5SaRzFKR4lDhQ8bjx19FMPj+grrIZTP+E/OSt9PdvWL4p6xsO21tLY5rQykSiR64l0Kk\n3BSdcpNIZmm6l0MV+pBxNuPP5LxkkXyL9sC9poKJEyk3RafcJJJZKlIcKN6Qcabn/8brcJJsB5Rs\nx5+peckiTqNnV8TJlJtiU24SR3n11ezuf8mS7O4fFSmOlOk2i7HE63CSSgeUXMYvUow0uiJOpNwk\nkmdJFh6rlhzMUiCwMTyWLBUsxrbtrOx4yMaNZPcARciyLFpaXo86ZDxr1uKM3K2yLIt77rmC7dt3\nM3/+LNatWz9iv/G25zt+kVKys3LkYnWJFizLJiwzWQin4Ck3JU+5SSRJWRjNyGbhkYqNr04+8YcE\ni5VVq0goL2kkxYFyNWQcb8GpVBek0pC3SOZFGl3RyIrkknKTSARxChGnFRWZFv77DY+uZGhkRUVK\niYq34JQWpBJxrrkDyzQNTIqScpM4VoxipNgLkUStWnIwNLKSoWJFRUqJitfhpNA7uIgUu0gP2atY\nkUKn3CSOEKUgUTES39A5ykSxoiKlBMXrcHL22ctz2sFFRFIXPg3s1ddOPLeigkUKjXKT5EWEgkTF\nSPoiFiuQVMGiIqUExetw0tT0tDqgiBSgSKMryz6Sx4BEkqDcJDmhoiSnRj6zMliwrEqsUFF3rxIU\nr8PJjBmL2LNnqzqgiBSBRLuolBrlJudRbpKsUFHiPKtWZb67lzHmBuALwOmDL70F/Ktt208lFZzk\nVSIdTtQBRUQKhXJTcVBukrTpWZKikux0r1bgS8B7gAE+C2wwxiy0bfudDMcmBSLZVX9FRDJMuUnG\nUG4qAaOKEhUjxSWpIsW27SdHvXSHMeYLwAWAEkEJSmXVXxGRTFJuktGUm4qMRkhKUsoPzhtjXMAn\ngWrgTxmLSAqGZVls2vQ9OjtRZxURcQTlJlFuKgJ6jkRIoUgxxpxD6MJfCfQAn7Bt+91MBybOl+qq\nvyIimabcJEOUmwqQpm1JBKmMpLwLLADqgL8FHjfGLIuWDF54YT0vvbR+zOtLl65h+fI1KRxenECr\n/oqIwyg3iXJToVBRIglIukixbTsA7B7841ZjzBJgLaHOKmMsX64LfjHSqr8i4iTKTQLKTY6jZ0kk\nDZlYzNEFeDKwHykQ8VYF1h0rEXEA5aYSo9zkAHqWRDIo2XVS7gb+F9gLjAOuBJYDK2J9TopLvFWB\nteqviOSScpOAclNOaYREciDZkZRJwI+BU4BuYDuwwrbt5zMdmDhXY+Mcbr31kair/jY2zslDVCJS\nwpSbRLkpE6IUH5GoIJFsS3adlM9lKxApHImsCiwikivKTQLKTUnT1CxxuEw8kyIiIiIiTqaiRAqM\nihQRERGRYhVWnKgokUKiIkVEpFAlMn981ZLsxyEizqEREykSKlJERJwuRjGi//kQEUAjJlJ0VKSI\niORaEh10huh/OkQkHl0npJioSBERyYY4hYj+Z0JERCQ6FSkiIonQ6IeI5EMK1x6RYqAiRUQENPIh\nIs6iZ0ykxKlIEZHik+KdR/2PgIjkjbpyiYygIkVECo9GPUSkGIy6lunaJXKCihQRyS+NeohIqdFU\nLpG4VKSISGao2BARiUxTuUSSpiJFRBKnaVYiIonRaIlIWlSkiJSSNFtZKtGKiMSh4kQkI1SkiBSL\nBAsQJU0RkQzSVC6RrFCRIuIkGukQEXE+jZaIZJ2KFJFcSKL4UMITEXEYjZaI5JyKFJF40hzdACUz\nkYKWgWtAwpYsyd2xJERTZUUcSUWKlJYU/mdDiUmkCDlwdHPjq5NTL4hU3CROoyIiBUFFijhbFu5g\nKhmJiBOvA6nGlFZxkyynF0MaFREpGipSJHe02J+ISMbl8hq5Md1iKJNFTpRYlDNEikNSRYoxZh3w\nCWAe0A+8DHzJtu1dWYhNMi2X86ojUOIQkWxQbsqddK7jmR7xUU4RKW7JjqQsBR4Etgx+9h7gaWPM\nmbZt92c6uJKU5UJCF3URKULKTQVA+UdEkpFUkWLb9qXhfzbGfBboABYDf4j4oTzfvS80uoiLiCQn\npdwkIiKOlu4zKRMAG+iK9gb9T7eIiORY3NwkIiLO5kr1g8YYA3wH+INt229nLiQREZHUKDeJiBSH\ndEZSHgbOAj6YoVhEisbezk76vN4xr1d7PJza0FAyMYjkgXKTSBT5zgv5Pr4UlpSKFGPMQ8ClwFLb\ntvfHeu/6F15g/UsvjXl9zdKlrFm+PJXDizja3s5OLr/zTohwIcbj4Zd33ZX1i7ETYhDJNeUmkejy\nnRfyfXwpPEkXKYNJ4OPActu298Z7/5rly3XBl5LS5/WC18vX3W5mlJcPv77H7+erXm/Eu0jFGINI\nLik3icSW77yQ7+NL4Ul2nZSHgTXAaqDXGDN5cFO3bdsDmQ5OpJDNKC9nXkXFyBcDgZKLQSTblJtE\nEpfvvJDv40vhSPbB+RuA8cDvgfawn09mNiwREZGEKTeJiBSZZNdJSbkbmIiISDYoN4mIFJ9010kR\nKUmxOpQABCyLd/v7GfD7h7f9ORAgYFk5izFeDOqyIiJSXJyem5SXJBkqUkSSFK9DyVeuuorW7m5u\njHDRH3C5OHL8eNZjPHL8eMwY3mlt5Rs/+Ym6rIiIFAmn5yblJUmWihSRJMXrUOIpL2fq+PH8U1kZ\n09wn/om1BQI8FAxSX1ub9Rjra2tjxuApL1eXFRGRIuL03KS8JMlSkSKSolgdSirKylhWVTVi+7s+\nH4/29+csvkRiUJcVEZHi4uTcpLwkyVCRIkUp3rzWdLYnos/v5x0YMe92TyBA3+CfczHv1hcMsjvs\n+AC7/X58wWBG9i8iIskp9dykvCTJUJEiRSfevNwHb7qJLz7wQMrbv3XDDTGP/05rK/uOHuUORv4D\nCwD7gGeamvjxb36T1Xm37V1d7OvuZh1Qbszw637bZh/Q0d2d1v5FRCQ5pZ6blJckWSpSpOjEm5d7\n5PjxtLYP+HzDfw439OfjAwNUAXcCs8O2vwfcBHT19GR93u2Az0elbfNVYzgjLBk02zZrbRvvYKzR\nfgcREcmsUs9NykuSLBUpUrRizWvt6u9np8vF8bKy4U37gkG6wrqORPt8ZUUFeDx81esdO0/W46Gm\nshIv8BZwOGzTAcALVLjdBCyLU4DTwrYPQFJtIH/1pz9FvPM0qa6OupoabMBj25SH7dNj29jA+Orq\nmL9DIlMHsj0tQK0oRaQYFXNuKva8lKtjSIiKFCk5v3n9dTqPH+dbEbb1DG6PpfGkk/jlXXdFvUg9\n+tRTBIDHABO2zSY0rP7W3r10Hj1KG1ARdjepzbbpJDQkPm/atJgx/OpPf+Iz99xDdYRtfcBtn/oU\nxhiw7THbjTFMnjAh5u8Q70Ibb9pCutMCsr1/ERGnKfTcVOx5KVfHkBNUpEjJOXL8ODXAd4A5Ya/v\nIjTknUiv+FgXoaN9fTH3f7SvD2ybyS4XM1wnFsrutSywrOEh+1g6urupBh4g8rB9Z3c32DZTXC5m\nhh2jL+wY6VxI401bSHdaQLb3LyLiNIWem4o9L+XqGHKCihQpSPE6nPR4vfzW62VH2JB5ezBIT9h7\nZwHzw/4c3lvEFwzyYn//iC4kbYHAcAeSRDqszALOibJ/27Zpsyyqwl5rsyzssDtMiRxjNrAo7I7X\n6DtU+4BxYa/tG7O39MSatpCJIXG1ohSRQlLsuanQ8xIoNxUSFSlScOINt/7txRfTfuwY90T4bC9w\n8MgRIHRhDt/D0IU6GAyy79gx7kpxVdxpU6cCoeHz8PtOQ5evA11dHLdtvmLbuMOOEQCOAy0HDsT9\nHf/m4osj/HYnlJeVMWAMd9o25WGv+22bAWNCc5ezqL2ri//z3e9qSFxESkax56bXmpv5lx/+sGDz\nEmi6VqFRkSIFJ95wqzcQoAa4j9AdoyEtwK1A5eAdnzIg/DG8oftaE+vqmF5Xx9dcLk4PWxX3z4EA\nX7OsuKvi1lRWAqF/XOH7H9pTbVUVHuBfgLlh23cCXyT08GK839EX547NhJoaptbVcY/Hw8ywz+/2\n+7nd66XxpJNifj5dAz6fhsRFpKQUe27Ctgs6L4GmaxUaFSklqhi6U8Qbbp0FzI8x5NwCuEb9eUgw\nGGSqy8WMsNf8g68nevwWTiSXMfsH3gTCe6C0MnLYPZFjvAcjfq/3wt5WUVY24uFICD0sWTE4zSAT\n34F4rSLTHRJXK0qR0qLc5PzcVOh5CZSbCoWKlBJU7MOdR3t7sYEOYE/YhbKDUBcTt8tFL6EH+Ubr\nBbw+Hx1Hj7IPCL+E7Rvcx9utrTGPP66ykl7gZsZ2UOkFAn4/fuD7ET7rB1o7O2PuH+CkcePoi/I7\n9AGn1NfHbOV45Phx/uHuu1P+DlR7PDH3n+6wfbz9J7q6sogUDuUmZ+emA4PT0aJxel6q9njSHilR\nbsotFSklqNiHO/3BIAaYBCPuNvUQujAvmjmTSxcvZn+EC+4p9fXYwMZnnmEKMDvsble/bWOA3oGB\nmMdfNGsWPwf+j8vFaWEdTP5iWfybZXHalCk079wZtQNKuTv+P8uPLFzItHXrovaj/8SFF/LRxYuj\n3pFK9ztwakNDzFaR6X6H4u2/kP9HRUQiU25ydm4qKysjFqfnpVMbGni3rS3mPuJRbsotFSklrNC7\nU8Qbbt0H1I7685DrP/rRqPv93lNPAbAfmBB2t2t/Esf3uFxMM4YZYYkkaAyesMQwuoNLpKWyYh3j\nExdeGPV3gNitKIcu1Ol8BxLZfzpD4rrYi5Qm5abInJKbCjUvhVNuKgwqUqTgxBtubairow+4g5Ff\n8AChIeeTxo2LuX9PeTn9wJ0wsgMJ0A/UVlbGPP6kujoGXC7WWhYERz5lMuBycVJt7XA84fdihvZU\nU1npiCHldOYGOyF+EZFcKvbcNKGmJu/X9XSfWVFuKiwqUqTgJDLV6GebNnFXWdmYDih3BIN8ZOHC\nuMcoB74ATA97rRX4KnDy+PFxh3un3H13xIW36mtrOXL8OL/4zW8od7moCLt7VW5ZuCyLs6ZPz/uQ\ncrothPMdv4hIrhV7bvrAvHlcf8klBZuXQLmp0KhIKWGF3J0i3pDxOI+HWrebcWHzWmv9fsYlMGTs\n9ftxAycDU8Ne7yP0D8br98e9kF04b17Ubb/ZsgVjDLsZ2cFlN2DChuBzcbGM9h3IRAthXexFJBXK\nTZE5ITcVel4C5aZCoiKlBBX7cGe1x4Pf7eb2wYfwRkjg9xtfXU0/cBdjh+T7B7eno762NuaQe31t\nbZRPZk6i3bkKfW64iBQO5abSzk3KSzKaipQSVArDnbZtY43qPQ/givDaaItmzmTqhAn8W3k5M8KG\n5PcEAnzF72fRzJlpxXbhvHlsijHkHutOV6ZkuzuXiEiylJtiK/bcpLwkoyVdpBhjlgL/DCwGTgEu\ns23715kOTLKrGC720fR5vVQEg3y9snLskHAgkNCFrrq8nDOrqkbcran0+UjvPtUJuShE4kmky4pI\nIVBeKh7KTbEVe25SXpJwqYyk1ABNwA+AX2Y2HJHMKfQVZZ2w8nK+z4FIgpSXpGAUcm5SXpJcSrpI\nsW37KeApABP+lK9IkXDCvOh8r7zshHMgkijlJSkF+b4uKy9JrumZFJFRnDAvOt8rLzvhHIiIyAn5\nvi4rL0muqUiRolUMK8rms4uJU86BiEgxKfTcpLwkuZL1ImX9Cy+w/qWXxry+ZulS1ixfnu3DSwnS\nkLCIxKPcJLmm3CSSnKwXKWuWL9cFX3JKQ8IiEo9yk+SacpNIcjTdS4pSsVzs1cVERKR4FENuUl6S\nXEllnZQa4AxgqIPKTGPMAqDLtu3WTAYnUqo0LUAkccpLItmnvCS5ZuwEVjkd8QFjlgO/A0Z/8Me2\nbV8z5gMbNyZ3ABEBnNGPXorAqlVF35I36bwEyk0iKVBekoxIMC+lsk7KC4Ar6YBEJCm64IskRnlJ\nJDeUlySXdFEXERERERFHUZEiIiIiIiKOoiJFREREREQcRUWKiIiIiIg4iooUERERERFxFBUpIiIi\nIiLiKCpSRERERETEUVSkiIiIiIiIo6hIERERERERR1GRIiIiIiIijqIiRUREREREHEVFioiIiIiI\nOIqKFBERERERcRQVKSIiIiIi4igqUkRERERExFFUpIiIiIiIiKOoSBEREREREUdRkSIiIiIiIo6i\nIkVERERERBxFRYqIiIiIiDiKihQREREREXGUlIoUY8yNxpg9xph+Y8xmY8z5mQ5MREQkGcpNIiLF\nI+kixRjz98B/AHcCi4BtwG+NMRMzHJuIiEhClJtERIpLKiMptwDfs237cdu23wVuAPqAazIamYiI\nSOKUm0REikhSRYoxphxYDDw39Jpt2zbwLHBhZkMTERGJT7lJRKT4JDuSMhEoAw6Oev0gMCUjEYmI\niCRHuUlEpMiou5eIiIiIiDiKO8n3HwKCwORRr08GDkT6wPrjx1m/fv2Y19esWcOaNWuSPLyIiMgY\nyk0iIkXGhKbtJvEBYzYDr9i2vXbwzwbYCzxg2/a3I3wkuQOIiEgmmXwHkAvKTSIiBSOhvJTsSArA\nfcCPjDGvA68S6qhSDfwohX2JiIhkgnKTiEgRSbpIsW37/w72nf9XQkPpTcAltm13Zjo4ERGRRCg3\niYgUl6Sne6VAQ+oiIvlTEtO9UqDcJCKSHwnlJXX3EhERERERR8l6kRKpe4rTOD1GxZcexZc+p8eo\n+CRZTv87cXp84PwYFV96FF/6nB6j0+NTkYLzY1R86VF86XN6jIpPkuX0vxOnxwfOj1HxpUfxpc/p\nMTo9Pk33EhERERERR1GRIiIiIiIijqIiRUREREREHEVFioiIiIiIOErW10kxxqyxbdvRT+Y4PUbF\nlx7Flz6nx6j4JFlO/ztxenzg/BgVX3oUX/qcHqPj48vBYo4iIiIiIiIJ03QvERERERFxFBUpIiIi\nIiLiKCpSRERERETEUVSkiIiIiIiIo6hIERERERERR0mrSDHGLDXG/NoYs88YYxljVifwmYuMMa8b\nYwaMMbuMMZ9JJ4ZMxmeMWT74vvCfoDFmUpbiW2eMedUYc8wYc9AY8ytjzJwEPpeTc5hKfLk8h8aY\nG4wx24wx3YM/LxtjPhrnM7n8/iUVX66/fxGOf/vgMe+L876cncNUYszxd/DOCMd6O85n8nb+SoVy\nU9rxKTelF59yU2bjdXRuclpeGjxeUeSmdEdSaoAm4B+BuL2MjTGnA5uA54AFwP3A940xH0kzjozE\nN8gGZgNTBn9OsW27IzvhsRR4EHg/8FdAOfC0MaYq2gdyfA6Tjm9Qrs5hK/Al4H3AYuB5YIMx5sxI\nb87D9y+p+Abl8vs3zBhzPnA9sC3O+04nt+cw/NgJxTgol+fxTWBy2LE+FO2N+Tx/JUa5KT3KTelR\nbsoQp+cmB+clKIbcZNt2Rn4AC1gd5z33AttHvbYe+E2m4kgzvuVAEBif7XiiHH/iYJwfcug5TCS+\nfJ/Dw8DVTjt3CcaXl3MH1AI7gQ8DvwPui/HevJzDJGPM2XkE7gTeSOL9ef8OltqPclNGYlRuSj9G\n5abkY3J0bnJqXho8XlHkplw/k3IB8Oyo134LXJjjOGIxQJMxpt0Y87Qx5gM5PPYEQpV2V4z35PMc\nJhIf5OEcGmNcxpgrgGrgT1Helrdzl2B8kJ/v338BG23bfj6B9+brHCYTI+T2PM42oWk7LcaYnxpj\npsd4byFcA0tRIfy9KDdFp9yUIuWmtDg5L0ER5CZ3jo83BTg46rWDwHhjjMe2bW+O4xltP/B5YAvg\nAa4Dfm+MWWLbdlM2D2yMMcB3gD/Yth1r3mBezmES8eX0HBpjziF0Ya0EeoBP2Lb9bpS35/zcJRlf\nzr9/g8lpIXBegh/JxzlMNsZcnsfNwGcJ3U07Bfga8KIx5hzbtnsjvN/p18BS5fS/F+Wm9ONTbko9\nPuWm9OPL9TksityU6yLF0Wzb3gXsCntpszFmFnALkO0HiB4GzgI+mOXjpCqh+PJwDt8lNH+yDvhb\n4HFjzLIYF9tcSzi+XJ87Y8w0Qsn9r2zb9md6/5mQSoy5PI+2bf827I9vGmNeBf4CfBL470weS0qX\nclNMyk2pUW5KkdPz0uDxiiI35Xq61wFCD/GEmwwcc8CdqmheBc7I5gGMMQ8BlwIX2ba9P87bc34O\nk4wvkqydQ9u2A7Zt77Zte6tt218h9PDa2ihvz/m5SzK+SLL5/VsMNABvGGP8xhg/oXmza40xvsE7\nlKPl+hymEmMkWf93DGDbdjehRBTtWIV4DSwFhfj3otyk3JSr+CIp5dxUUHkJCjc35Xok5U/Ax0a9\ntoLY8yDzbSGhYbqsGLzIfhxYbtv23gQ+ktNzmEJ8kWT1HI7iIjSUGokTvn+x4oskm+fuWeDcUa/9\nCHgH+KY9+OTcKLk+h6nEGElOvoPGmFpCSeDxKG9xwndQxirEvxflJuWmTFJuSlxB5SUo4NyUzlP3\nhNooLiB0oi3g5sE/Tx/cfg/w47D3n05o7uO9wFxC7Rd9hIbMstHdINn41gKrgVnA2YSG8/yE7tJk\nI76HgSOE2ilODvupDHvP3fk6hynGl7NzOHjspcBpwDmDf58B4MMO+f4lG19Ov39RYh7RoSSf3780\nYszld/DbwLLBv+MPAM8Qmsd7slPPXyn8oNyUbnzKTenFp9yU+ZgdnZsSiC/X/4aLIjelexKWE7rA\nBkf9/HBw+38Dz4/6zDLgdaAfeA+4KotfmqTiA/55MKZeoJNQv+hlWYwvUmxB4NNh78nbOUwlvlye\nQ+D7wO7B83AAeJrBi2y+z10q8eX6+xcl5ucZeaHN6zlMJcYcfwfXA22D52Iv8DNghpPPXyn8JHvt\nz/XfS7Lx5frakMq1P5fnMJX4cnxdUG7KfMyOzk3x4svDv+GiyE1mMDARERERERFHyPWD8yIiIiIi\nIjGpSBEREREREUdRkSIiIiIiIo6iIkVERERERBxFRYqIiIiIiDiKihQREREREXEUFSkiIiIiIuIo\nKlJERERERMRRVKSIiIiIiIijqEgRERERERFHUZEiIiIiIiKOoiJFREREREQc5f8DXzGt8jfsT84A\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10d006a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "import matplotlib.gridspec as gridspec\n",
    "import itertools\n",
    "\n",
    "gs = gridspec.GridSpec(2, 2)\n",
    "\n",
    "fig = plt.figure(figsize=(10,8))\n",
    "\n",
    "for clf, lab, grd in zip([clf1, clf2, clf3, sclf], \n",
    "                         ['KNN', \n",
    "                          'Random Forest', \n",
    "                          'Naive Bayes',\n",
    "                          'StackingClassifier'],\n",
    "                          itertools.product([0, 1], repeat=2)):\n",
    "\n",
    "    clf.fit(X, y)\n",
    "    ax = plt.subplot(gs[grd[0], grd[1]])\n",
    "    fig = plot_decision_regions(X=X, y=y, clf=clf)\n",
    "    plt.title(lab)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Using Probabilities as Meta-Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatively, the class-probabilities of the first-level classifiers can be used to train the meta-classifier (2nd-level classifier) by setting `use_probas=True`. If `average_probas=True`, the probabilities of the level-1 classifiers are averaged, if `average_probas=False`, the probabilities are stacked (recommended). For example, in a 3-class setting with 2 level-1 classifiers, these classifiers may make the following \"probability\" predictions for 1 training sample:\n",
    "\n",
    "- classifier 1: [0.2, 0.5, 0.3]\n",
    "- classifier 2: [0.3, 0.4, 0.4]\n",
    "\n",
    "If `average_probas=True`, the meta-features would be:\n",
    "\n",
    "- [0.25, 0.45, 0.35]\n",
    "\n",
    "In contrast, using `average_probas=False` results in k features where, k = [n_classes * n_classifiers], by stacking these level-1 probabilities:\n",
    "\n",
    "- [0.2, 0.5, 0.3, 0.3, 0.4, 0.4]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3-fold cross validation:\n",
      "\n",
      "Accuracy: 0.91 (+/- 0.01) [KNN]\n",
      "Accuracy: 0.91 (+/- 0.06) [Random Forest]\n",
      "Accuracy: 0.92 (+/- 0.03) [Naive Bayes]\n",
      "Accuracy: 0.94 (+/- 0.03) [StackingClassifier]\n"
     ]
    }
   ],
   "source": [
    "clf1 = KNeighborsClassifier(n_neighbors=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "lr = LogisticRegression()\n",
    "sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],\n",
    "                          use_probas=True,\n",
    "                          average_probas=False,\n",
    "                          meta_classifier=lr)\n",
    "\n",
    "print('3-fold cross validation:\\n')\n",
    "\n",
    "for clf, label in zip([clf1, clf2, clf3, sclf], \n",
    "                      ['KNN', \n",
    "                       'Random Forest', \n",
    "                       'Naive Bayes',\n",
    "                       'StackingClassifier']):\n",
    "\n",
    "    scores = model_selection.cross_val_score(clf, X, y, \n",
    "                                              cv=3, scoring='accuracy')\n",
    "    print(\"Accuracy: %0.2f (+/- %0.2f) [%s]\" \n",
    "          % (scores.mean(), scores.std(), label))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - Stacked Classification and GridSearch"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To set up a parameter grid for scikit-learn's `GridSearch`, we simply provide the estimator's names in the parameter grid -- in the special case of the meta-regressor, we append the `'meta-'` prefix."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.667 +/- 0.00 {'kneighborsclassifier__n_neighbors': 1, 'meta-logisticregression__C': 0.1, 'randomforestclassifier__n_estimators': 10}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier__n_neighbors': 1, 'meta-logisticregression__C': 0.1, 'randomforestclassifier__n_estimators': 50}\n",
      "0.927 +/- 0.02 {'kneighborsclassifier__n_neighbors': 1, 'meta-logisticregression__C': 10.0, 'randomforestclassifier__n_estimators': 10}\n",
      "0.913 +/- 0.03 {'kneighborsclassifier__n_neighbors': 1, 'meta-logisticregression__C': 10.0, 'randomforestclassifier__n_estimators': 50}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier__n_neighbors': 5, 'meta-logisticregression__C': 0.1, 'randomforestclassifier__n_estimators': 10}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier__n_neighbors': 5, 'meta-logisticregression__C': 0.1, 'randomforestclassifier__n_estimators': 50}\n",
      "0.933 +/- 0.02 {'kneighborsclassifier__n_neighbors': 5, 'meta-logisticregression__C': 10.0, 'randomforestclassifier__n_estimators': 10}\n",
      "0.940 +/- 0.02 {'kneighborsclassifier__n_neighbors': 5, 'meta-logisticregression__C': 10.0, 'randomforestclassifier__n_estimators': 50}\n",
      "Best parameters: {'kneighborsclassifier__n_neighbors': 5, 'meta-logisticregression__C': 10.0, 'randomforestclassifier__n_estimators': 50}\n",
      "Accuracy: 0.94\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.naive_bayes import GaussianNB \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from mlxtend.classifier import StackingClassifier\n",
    "\n",
    "# Initializing models\n",
    "\n",
    "clf1 = KNeighborsClassifier(n_neighbors=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "lr = LogisticRegression()\n",
    "sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], \n",
    "                          meta_classifier=lr)\n",
    "\n",
    "params = {'kneighborsclassifier__n_neighbors': [1, 5],\n",
    "          'randomforestclassifier__n_estimators': [10, 50],\n",
    "          'meta-logisticregression__C': [0.1, 10.0]}\n",
    "\n",
    "grid = GridSearchCV(estimator=sclf, \n",
    "                    param_grid=params, \n",
    "                    cv=5,\n",
    "                    refit=True)\n",
    "grid.fit(X, y)\n",
    "\n",
    "cv_keys = ('mean_test_score', 'std_test_score', 'params')\n",
    "\n",
    "for r, _ in enumerate(grid.cv_results_['mean_test_score']):\n",
    "    print(\"%0.3f +/- %0.2f %r\"\n",
    "          % (grid.cv_results_[cv_keys[0]][r],\n",
    "             grid.cv_results_[cv_keys[1]][r] / 2.0,\n",
    "             grid.cv_results_[cv_keys[2]][r]))\n",
    "\n",
    "print('Best parameters: %s' % grid.best_params_)\n",
    "print('Accuracy: %.2f' % grid.best_score_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In case we are planning to use a regression algorithm multiple times, all we need to do is to add an additional number suffix in the parameter grid as shown below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 0.1}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 0.1}\n",
      "0.907 +/- 0.03 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 10.0}\n",
      "0.913 +/- 0.03 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 10.0}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 0.1}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 0.1}\n",
      "0.927 +/- 0.02 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 10.0}\n",
      "0.913 +/- 0.03 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 1, 'meta-logisticregression__C': 10.0}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 0.1}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 0.1}\n",
      "0.927 +/- 0.02 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 10.0}\n",
      "0.913 +/- 0.03 {'kneighborsclassifier-2__n_neighbors': 1, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 10.0}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 0.1}\n",
      "0.667 +/- 0.00 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 0.1}\n",
      "0.933 +/- 0.02 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 10, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 10.0}\n",
      "0.940 +/- 0.02 {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 10.0}\n",
      "Best parameters: {'kneighborsclassifier-2__n_neighbors': 5, 'randomforestclassifier__n_estimators': 50, 'kneighborsclassifier-1__n_neighbors': 5, 'meta-logisticregression__C': 10.0}\n",
      "Accuracy: 0.94\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "# Initializing models\n",
    "\n",
    "clf1 = KNeighborsClassifier(n_neighbors=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "lr = LogisticRegression()\n",
    "sclf = StackingClassifier(classifiers=[clf1, clf1, clf2, clf3], \n",
    "                          meta_classifier=lr)\n",
    "\n",
    "params = {'kneighborsclassifier-1__n_neighbors': [1, 5],\n",
    "          'kneighborsclassifier-2__n_neighbors': [1, 5],\n",
    "          'randomforestclassifier__n_estimators': [10, 50],\n",
    "          'meta-logisticregression__C': [0.1, 10.0]}\n",
    "\n",
    "grid = GridSearchCV(estimator=sclf, \n",
    "                    param_grid=params, \n",
    "                    cv=5,\n",
    "                    refit=True)\n",
    "grid.fit(X, y)\n",
    "\n",
    "cv_keys = ('mean_test_score', 'std_test_score', 'params')\n",
    "\n",
    "for r, _ in enumerate(grid.cv_results_['mean_test_score']):\n",
    "    print(\"%0.3f +/- %0.2f %r\"\n",
    "          % (grid.cv_results_[cv_keys[0]][r],\n",
    "             grid.cv_results_[cv_keys[1]][r] / 2.0,\n",
    "             grid.cv_results_[cv_keys[2]][r]))\n",
    "\n",
    "print('Best parameters: %s' % grid.best_params_)\n",
    "print('Accuracy: %.2f' % grid.best_score_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## StackingClassifier\n",
      "\n",
      "*StackingClassifier(classifiers, meta_classifier, use_probas=False, average_probas=False, verbose=0, use_features_in_secondary=False)*\n",
      "\n",
      "A Stacking classifier for scikit-learn estimators for classification.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `classifiers` : array-like, shape = [n_classifiers]\n",
      "\n",
      "    A list of classifiers.\n",
      "    Invoking the `fit` method on the `StackingClassifer` will fit clones\n",
      "    of these original classifiers that will\n",
      "    be stored in the class attribute\n",
      "    `self.clfs_`.\n",
      "\n",
      "- `meta_classifier` : object\n",
      "\n",
      "    The meta-classifier to be fitted on the ensemble of\n",
      "    classifiers\n",
      "\n",
      "- `use_probas` : bool (default: False)\n",
      "\n",
      "    If True, trains meta-classifier based on predicted probabilities\n",
      "    instead of class labels.\n",
      "\n",
      "- `average_probas` : bool (default: False)\n",
      "\n",
      "    Averages the probabilities as meta features if True.\n",
      "\n",
      "- `verbose` : int, optional (default=0)\n",
      "\n",
      "    Controls the verbosity of the building process.\n",
      "    - `verbose=0` (default): Prints nothing\n",
      "    - `verbose=1`: Prints the number & name of the regressor being fitted\n",
      "    - `verbose=2`: Prints info about the parameters of the\n",
      "    regressor being fitted\n",
      "    - `verbose>2`: Changes `verbose` param of the underlying regressor to\n",
      "    self.verbose - 2\n",
      "\n",
      "- `use_features_in_secondary` : bool (default: False)\n",
      "\n",
      "    If True, the meta-classifier will be trained both on the predictions\n",
      "    of the original classifiers and the original dataset.\n",
      "    If False, the meta-classifier will be trained only on the predictions\n",
      "    of the original classifiers.\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `clfs_` : list, shape=[n_classifiers]\n",
      "\n",
      "    Fitted classifiers (clones of the original classifiers)\n",
      "\n",
      "- `meta_clf_` : estimator\n",
      "\n",
      "    Fitted meta-classifier (clone of the original meta-estimator)\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y)*\n",
      "\n",
      "Fit ensemble classifers and the meta-classifier.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit_transform(X, y=None, **fit_params)*\n",
      "\n",
      "Fit to data, then transform it.\n",
      "\n",
      "Fits transformer to X and y with optional parameters fit_params\n",
      "and returns a transformed version of X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : numpy array of shape [n_samples, n_features]\n",
      "\n",
      "    Training set.\n",
      "\n",
      "\n",
      "- `y` : numpy array of shape [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `X_new` : numpy array of shape [n_samples, n_features_new]\n",
      "\n",
      "    Transformed array.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*get_params(deep=True)*\n",
      "\n",
      "Return estimator parameter names for GridSearch support.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict target values for X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `labels` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted class labels.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities for X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `proba` : array-like, shape = [n_samples, n_classes]\n",
      "\n",
      "    Probability for each class per sample.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y, sample_weight=None)*\n",
      "\n",
      "Returns the mean accuracy on the given test data and labels.\n",
      "\n",
      "In multi-label classification, this is the subset accuracy\n",
      "which is a harsh metric since you require for each sample that\n",
      "each label set be correctly predicted.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : array-like, shape = (n_samples, n_features)\n",
      "\n",
      "    Test samples.\n",
      "\n",
      "\n",
      "- `y` : array-like, shape = (n_samples) or (n_samples, n_outputs)\n",
      "\n",
      "    True labels for X.\n",
      "\n",
      "\n",
      "- `sample_weight` : array-like, shape = [n_samples], optional\n",
      "\n",
      "    Sample weights.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `score` : float\n",
      "\n",
      "    Mean accuracy of self.predict(X) wrt. y.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*set_params(**params)*\n",
      "\n",
      "Set the parameters of this estimator.\n",
      "\n",
      "The method works on simple estimators as well as on nested objects\n",
      "(such as pipelines). The latter have parameters of the form\n",
      "``<component>__<parameter>`` so that it's possible to update each\n",
      "component of a nested object.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "self\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.classifier/StackingClassifier.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
